
package com.media.controller;

import com.common.domain.pojo.Result;
import com.media.service.IMediaService;
import com.media.domain.pojo.Media;
import com.media.domain.vo.MediaVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 媒体表 前端控制器
 * </p>
 *
 * @author 小杰大人
 * @since 2025-01-15
 */
@RestController
@RequestMapping("/api/media")
public class MediaController {

    @Resource
    IMediaService iMediaService;

    /**
     * 上传头像
     * @param file
     * @return 用户信息
     */
    @PostMapping("/upload/avatar")
    public Result<MediaVo> uploadAvatar(@RequestPart("file") MultipartFile file) throws IOException {
        MediaVo mediaVo = iMediaService.uploadAvatar(file);
        return Result.success(mediaVo);
    }

    /**
     * 上传图片文件
     * @param file
     * @return  文件访问路径
     */
    @PostMapping("/upload/images")
    public Result<MediaVo> uploadImage(@RequestPart("file") MultipartFile file) throws IOException {
        MediaVo mediaVo = iMediaService.uploadImage(file);
        return Result.success(mediaVo);
    }

    /**
     * 上传视频
     * @param file
     * @return 文件访问路径
     * @throws IOException
     */
    @PostMapping("/upload/videos")
    public Result<MediaVo> uploadVideo(@RequestPart("file") MultipartFile file) throws IOException {
        MediaVo mediaVo = iMediaService.uploadVideo(file);
        return Result.success(mediaVo);
    }

    /**
     * 根据文件id获取文件信息
     * @param id 文件id
     * @return 文件信息
     */
    @GetMapping("/infoById")
    public Result<Media> getMedia(@RequestParam("id") Long id){
        return Result.success(iMediaService.getById(id));
    }

    /**
     * 根据文件id集合获取文件信息
     * @param ids 文件id集合
     * @return 文件信息列表 Key = 文件id value = 文件对象
     */
    @GetMapping("/infoByIds")
    public Result<Map<Long,Media>> getMediaByIds(@RequestParam("ids") List<Long> ids){
        return Result.success(iMediaService.getMediaByIds(ids));
    }



    /**
     * 根据id删除文件信息
     * @param id
     */
    @DeleteMapping("/delete/{id}")
    public void removeById(@PathVariable("id") Long id){
        iMediaService.deleteById(id);
    }

    /**
     * 根据id集合删除文件信息
     * @param ids
     */
    @DeleteMapping("/delete")
    public void removeByIds(@RequestParam("ids") List<Long> ids){
        iMediaService.deleteByIds(ids);
    }
}